import { Catch } from '@midwayjs/core';
import { MidwayI18nService } from '@midwayjs/i18n';
import { MidwayValidationError } from '@midwayjs/validate';
import { Context } from 'vm';

/**
 * 教研失败错误提示
 * @author ellwood
 * @date 2024-01-15
 * @version V1.0.0
 */
@Catch(MidwayValidationError)
export class ValidateErrorFilter {
  async catch(err: MidwayValidationError, ctx: Context) {
    // 获取国际化服务
    const i18nService = await ctx.requestContext.getAsync(MidwayI18nService);

    // 翻译
    const message = (await i18nService.translate(err.message)) || err.message;

    // 未捕获的错误，是系统错误，错误码500
    ctx.status = 422;
    return {
      code: 422,
      message,
    };
  }
}
